# -*- coding: utf-8 -*-

import pymysql
from tools.setting import MYSQL_DB, MYSQL_PWD, MYSQL_USER, MYSQL_PORT, MYSQL_HOST


class NBAdb:

    def __init__(self):
        """
        建立连接
        """
        # 建立连接
        self.conn = pymysql.connect(host=MYSQL_HOST,
                                    port=MYSQL_PORT,
                                    user=MYSQL_USER,
                                    password=MYSQL_PWD,
                                    database=MYSQL_DB,
                                    charset="utf8")
        # 建立游标
        self.cur = self.conn.cursor()

    def create_table(self, sql_create_tabel):
        """
        建立新数据表。
        :param sql_create_tabel: 创建新数据表的SQL语句。
        :return:
        """
        try:
            self.cur.execute(sql_create_tabel)
            print("创建成功")
        except Exception as e:
            print("创建数据库异常")
            print(e)
            self.conn.rollback()  # 回滚

    def insert_data(self, sql_insert: str, datas_insert: list):
        """
        批量插入数据。
        :param sql_insert: 向表中插入数据的SQL语句。
        :param datas_insert: 待插入的数据值列表。
        :return:
        """
        try:
            print('请等待...正在执行插入...')
            # 执行插入
            self.cur.execute(sql_insert, datas_insert)
            # 提交
            self.conn.commit()
            print('数据成功插入...')

        except Exception as e:
            print("插入数据异常")
            print(e)
            self.conn.rollback()  # 回滚

    def select_data(self, sql_select):
        """
        查询数据。
        :param sql_select: 查询数据的SQL语句。
        :return:
        """
        try:
            self.cur.execute(sql_select)
            while 1:
                res = self.cur.fetchone()
                if res is None:
                    # 表示已经取完结果
                    break
                print(res)
        except Exception as e:
            print("查询数据异常")
            print(e)
            self.conn.rollback()  # 回滚

    def __del__(self):
        """
        释放资源
        :return:
        """
        self.cur.close()  # 关闭游标
        self.conn.close()  # 关闭连接








